package com.itqf.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.bind.support.SessionStatus;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.Map;

/**
 * @Description:
 * @Company: 千锋互联
 * @Author: 李丽婷
 * @Date: 2020/11/16
 * @Time: 上午9:30
 */
@Controller
@SessionAttributes({"username"})//request域中的username存储到session  用户信息
public class MySecondController {


    @RequestMapping("/find")
    public  String find(HttpServletRequest request, HttpSession session){
        request.setAttribute("name","request域中的数据");
        session.setAttribute("name","session域中的数据");

        return "show";//逻辑视图
    }

    @RequestMapping("/find1")
    public  String find1(Model model){
        model.addAttribute("name","（model）--request域中的数据");
        model.addAttribute("username","（model）--request域中的数据- session");

        return "show";//逻辑视图
    }

    @RequestMapping("/find2")
    public  ModelAndView  find2(ModelAndView modelAndView){
        //存储的数据
        modelAndView.addObject("name","（ModelAndView）--request域中的数据");
        modelAndView.setViewName("show");//跳转的页面
       return  modelAndView;
    }


    @RequestMapping("/find3")
    public  String find2(Map map){//使用Model  ModelAndView Map默认会存储到Request域中
        map.put("name","（map）--request域中的数据");
        return "show";//逻辑视图
    }

    //SessionStatus  清除通过@SessionAttributes  注解存储到session域的数据
    @RequestMapping("/clear")
    public String clear(SessionStatus sessionStatus){//
        //SessionStatus  清除通过@SessionAttributes注解存储到session域的数据  不能清空传统session存放的值
        sessionStatus.setComplete();// cleanup of session attributes.
        System.out.println("---->清除通过@SessionAttributes  注解存储到session域的数据");


        return "show";//逻辑视图
    }

    //清除传统的session中的数据使用
    @RequestMapping("/clear1")
    public String clear1(HttpSession session){

        //session.removeAttribute("name");//只是移除session中的name属性
         session.invalidate();//使session中所有数据都失效
       // session.setMaxInactiveInterval(0);//使session会话都过期
        System.out.println("---->清除session中的数据");


        return "show";//逻辑视图
    }


}
